const communicate = require("../../api/communicate");
const {
  baseURL
} = require("../../utils/request");
Page({

  /**
   * 页面的初始数据
   */
  data: {
    show: false,
    count: '',
    userId: '',
    fileList: [],
    url:'',
    oss_url: baseURL,
    releaseTime: "",
    imageUrl: "",
    username:"",
    communicate:[]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
  this.getcampuserList()
  
},
//获取用户信息
getcampuserList(){
  const userInfo = wx.getStorageSync('userInfo');
  const userId = userInfo.userId
  communicate.campuserList(userId).then(res =>{
       console.log("1211",res)
       const completeImageUrl = this.data.oss_url + res.data.imageUrl; // 拼接完整的URL
       const newUserInfo = {
        username: res.data.username,
        imageUrl: completeImageUrl 
      };
  this.getcommunicate(newUserInfo)
})
},
//获取动态列表
getcommunicate(newUserInfo){
  communicate.communicationlList().then(res => {
    console.log("营地交流列表:", res); // 打印整个响应以检查结构
    console.log("用户:", newUserInfo); // 打印整个响应以检查结构
    const newCommunications = res.rows.map(row => ({
      username:newUserInfo.username,
      imageUrl:newUserInfo.imageUrl,
      count: row.count,
      time: row.time,
      images: row.images.map(image => image.url) // 提取所有图片的URL
    }));

    this.setData({
      communicate: [...this.data.communicate, ...newCommunications] // 合并新旧数据
    });
    console.log("动态展示", this.data.communicate);
  })
},
  //提交编辑发布
  submitComment() {
    const { content, fileList } = this.data;
    const userInfo = wx.getStorageSync('userInfo');
    const userId = userInfo.userId
    const submitTime = new Date().toISOString(); // ISO 8601 格式的时间字符串
    const images = fileList.map(file => ({
    url: file.url,
    // 如果 Image 对象需要其他字段，可以在这里添加
  }));
    const submitData = {
      userId: userId,
      count: content,
      time:submitTime,
      images: images,
      url: this.data.imageUrl,
    };
    console.log('Submitting data:', submitData); // 开发环境下的日志
    communicate.addcommunication(submitData).then(res => {
      console.log('提交成功:', res);
      console.log('提交数据:', res); // 开发环境下的日志
      // 成功后关闭弹窗或执行其他操作
      this.setData({
        show: false,
        content: '', // 清空文本内容
        fileList: [], // 清空文件列表
        imageUrl: '' // 清空图片URL
      });
      wx.showToast({
        title: '提交成功',
        icon: 'success'
      });
      // 更新 communicate 数组以显示新提交的内容
      const newCommunication = {
        username: userInfo.username, // 假设 userInfo 中有 username 字段
      imageUrl: this.data.imageUrl,
      count: content,
      time: submitTime,
      images: images.map(img => img.url)
      };
      this.setData({
        communicate: [newCommunication, ...this.data.communicate] // 将新内容放在最前面
      });
    })
  },
  //发布动态
  gocommuncication() {
    this.setData({
      show: true,
    });
  },
  // 上传完毕的回调函数
  afterRead(event) {
    wx.showLoading({
      title: '正在上传图片',
      mask: true
    })
    let that = this
    console.log(event, "图片上传event");
    const {
      file
    } = event.detail;
    // 当设置 mutiple 为 true 时, file 为数组格式
    const userInfo = wx.getStorageSync('userInfo') || null;
    // console.log(userInfo,"######");
    const token = userInfo.token
    // 批量上传文件
    const uploadPromises = file.map((f) => {
      return new Promise((resolve, reject) => {
        wx.uploadFile({
          url: 'http://127.0.0.1:8080/common/upload', // 仅为示例，非真实的接口地址
          // url: 'http://127.0.0.1:8080/common/upload', // 仅为示例，非真实的接口地址
          filePath: f.url,
          name: 'file',
          header: {
            'Authorization': `Bearer ${token}`,
            'content-type': 'application/json',
          },
          success: (res) => {
            try {
              // 尝试解析响应数据
              const parsedData = JSON.parse(res.data);
              resolve(parsedData);
            } catch (parseError) {
              console.error('解析响应数据失败:', parseError);
              reject(parseError);
            }
          },
          fail: (err) => {
            reject(err);
          },
        });
      });
    });
    // 所有文件上传完成后更新 fileList 和 filenames 字符串
    Promise.all(uploadPromises).then((responses) => {
      const {
        fileList = []
      } = that.data;
      console.log(responses, "responses");
      // 确保 responses 是一个数组
      if (!Array.isArray(responses)) {
        throw new Error('responses is not an array');
      }
      const updatedFiles = responses.map((res, index) => ({
        url: res.url, // 上传后的文件 URL
      }));
      console.log(updatedFiles, "updatedFiles");
      // 更新 fileList
      fileList.push(...updatedFiles);
      that.setData({
        fileList
      });
      // 组合文件地址名
      const filenames = responses.map(res => res.fileName);
      const filenamesString = filenames.join(',');
      // 更新 filenamesString
      that.setData({
        imageUrl: filenamesString
      });
      console.log(that.data, "data");
      wx.hideLoading()

    }).catch((error) => {
      console.error('上传文件失败:', error);
    });
    
  },
  //删除图片
  delete(e) {
    const index = e.detail.index
    this.setData({
      fileList: this.data.fileList.splice(1, index)
    })
  },


  // 放弃编辑
  resetFiled() {
    this.setData({
      content: '',
      fileList: [],
      imageUrl: ''
    });
    //返回上一个页面
    this.setData({
      show: false
    });

  },


  


  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})